Completed
Push — master ( 87e1e6...922ed9 )
by
unknown
02:01
created

remove-duplicate-attr.js ➔ removeDuplicateAttr   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
c 1
b 0
f 0
nc 3
dl 0
loc 17
rs 9.4285
nop 2

1 Function

Rating   Name   Duplication   Size   Complexity  
A remove-duplicate-attr.js ➔ ... ➔ ??? 0 8 3
1
import {
2
  getAttr
3
} from '../../'
4
5
function recurseDeleteKey(currentLevel, arrayKeyAttr) {
6
  var currentArray = arrayKeyAttr.slice(0)
7
8
  if (arrayKeyAttr.length === 1) {
9
    delete currentLevel[arrayKeyAttr[0]]
10
  }
11
12
  Array.prototype.forEach.call(currentArray, (key) => {
13
    if(typeof currentLevel[key] !== 'undefined' && currentLevel[key] !== null) {
14
      currentLevel = currentLevel[key]
15
      currentArray.shift()
16
      recurseDeleteKey(currentLevel, currentArray)
17
      if(typeof currentLevel === 'object' && Object.prototype.toString.call(currentLevel) === '[object Array]') {
18
        Array.prototype.forEach.call(currentLevel, (item) => {
19
          recurseDeleteKey(item, currentArray)
20
        })
21
      }else {
22
        recurseDeleteKey(currentLevel, currentArray)
23
      }
24
    }
25
  })
26
}
27
28
export default function removeDuplicateAttr(text, json) {
29
  var regAbe = /{{abe[\S\s].*?duplicate=['|"]([\S\s].*?['|"| ]}})/g
30
  var matches = text.match(regAbe)
31
  if(typeof matches !== 'undefined' && matches !== null){
32
33
    Array.prototype.forEach.call(matches, (match) => {
34
      var keyAttr = getAttr(match, 'key')
35
36
      if(typeof match !== 'undefined' && match !== null) {
37
        var arrayKeyAttr = keyAttr.split('.')
38
        recurseDeleteKey(json, arrayKeyAttr)
39
      }
40
    })
41
  }
42
43
  return json
44
}